home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue71 / Construc / DRBOB42.DPR next >
Encoding:
Text File  |  2001-06-04  |  3.1 KB  |  110 lines

  1. program DrBob42;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   DrBobCGI, SysUtils, DB, SqlExpr;
  5.  
  6.   procedure DataSet2HTML(const DataSet: TDataSet);
  7.   var
  8.     fields: Integer;
  9.   begin
  10.     writeln('<table border=1>');
  11.     DataSet.Open;
  12.     write('<tr>');
  13.     for fields:=0 to Pred(DataSet.FieldCount) do
  14.       write('<td bgcolor=ffffff><b>',DataSet.Fields[fields].FieldName,'</td>');
  15.     writeln('</tr>');
  16.     DataSet.First;
  17.     while not DataSet.Eof do
  18.     begin
  19.       write('<tr>');
  20.       for fields:=0 to Pred(DataSet.FieldCount) do
  21.         write('<td>',DataSet.Fields[fields].AsString,'</td>');
  22.       writeln('</tr>');
  23.       DataSet.Next
  24.     end;
  25.     writeln('</table>')
  26.   end {DataSet2HTML};
  27.  
  28.   procedure Record2HTML(const DataSet: TDataSet);
  29.   var
  30.     fields: Integer;
  31.   begin
  32.     if not DataSet.Active then DataSet.Open;
  33.     for fields:=0 to Pred(DataSet.FieldCount) do
  34.       writeln('<b>',DataSet.Fields[fields].FieldName,':</b> ',
  35.         DataSet.Fields[fields].Value,'<br>')
  36.   end {Record2HTML};
  37.  
  38.   procedure NavigatorHTML(const DataSet: TDataSet; RecNo: Integer);
  39.   begin
  40.     if RecNo = 0 then RecNo := 1;
  41.     if not DataSet.Active then DataSet.Open;
  42.     write('<a href="',ScriptName,'?RecNo=1">First</a> | ');
  43.     write('<a href="',ScriptName,'?RecNo=',Pred(RecNo),'">Prior</a> | ');
  44.     write('<a href="',ScriptName,'?RecNo=',Succ(RecNo),'">Next</a> | ');
  45.     write('<a href="',ScriptName,'?RecNo=-1">Last</a> | ');
  46.     write('<a href="',ScriptName,'?RecNo=',RecNo,'">Refresh</a> ',
  47.           '(',RecNo,')<br>')
  48.   end {NavigatorHTML};
  49.  
  50.   procedure DBQuery2HTML(const DB, Query: String);
  51.   var
  52.     RecNo,i: Integer;
  53.     DataSet: TSQLDataSet;
  54.     SQLConnection1: TSQLConnection;
  55.   begin
  56.     SQLConnection1 := TSQLConnection.Create(nil);
  57.     with SQLConnection1 do
  58.     begin
  59.       LoadParamsOnConnect := True;
  60.       ConnectionName := DB;
  61.       LoginPrompt := False;
  62.       Connected := True;
  63.     end;
  64.     DataSet := TSQLDataSet.Create(nil);
  65.     try
  66.       DataSet.SQLConnection := SQLConnection1;
  67.       DataSet.CommandText := Query;
  68.       DataSet.Open;
  69.       RecNo := StrToIntDef(Value('RecNo'),1);
  70.       if RecNo = -1 then
  71.       begin
  72.         RecNo := 1;
  73.         while not DataSet.Eof do
  74.         begin
  75.           Inc(RecNo);
  76.           DataSet.Next
  77.         end
  78.       end
  79.       else
  80.         for i:=1 to Pred(RecNo) do DataSet.Next;
  81.       if DataSet.Eof then // went past Eof, need to backtrack!
  82.       begin
  83.         Dec(RecNo); // one before Eof
  84.         DataSet.First;
  85.         for i:=1 to Pred(RecNo) do DataSet.Next
  86.       end;
  87.       NavigatorHTML(DataSet,RecNo);
  88.       writeln('<hr>');
  89.       Record2HTML(DataSet);
  90.       writeln('<hr>');
  91.       NavigatorHTML(DataSet,RecNo);
  92.       writeln('<hr>');
  93.       DataSet2HTML(DataSet);
  94.     finally
  95.       DataSet.Close;
  96.       DataSet.Free;
  97.       SQLConnection1.Free
  98.     end
  99.   end {DBQuery2HTML};
  100.  
  101. begin
  102.   writeln('content-type: text/html');
  103.   writeln;
  104.   writeln('<html>');
  105.   writeln('<body bgcolor=ffffcc>');
  106.   DBQuery2HTML('IBLocal','select * from customer');
  107.   writeln('</body>');
  108.   writeln('</html>')
  109. end.
  110.